このマニュアルには Flex の字句スキャナ生成機能が持つあらゆる重要な点が説明されています。これには、パターン・マッチング・ルールの記述方法、スキャナの最適化方法、および Flex が POSIX にどのように適合しているか、という点が含まれています。本書中いたるところに実例が示されていますし、有用なコードを集めた特別なセクションもあります。
このマニュアルは、チュートリアルであるというよりはむしろリファレンス・マニュアルです。題材や説明はなるべくシンプルになるよう努めましたが、かなり専門的になってしまったころもあります。Flex の使用経験が浅いユーザでも最初の2、3章は問題なく読むことができるはずです。しかし、実例を含む章を理解するには、少なくとも実用的な C 言語の知識とある程度のプログラミング経験が必要になります。特に、Flex と Bison を一緒に使う方法を説明した章は、前提として yacc/Bison と BNF(BNF が何であるかを知らない読者はおそらくそれを勉強する必要があるでしょう)に関する知識を必要とします。
字句解析、コンパイラ・デザイン、プログラミング全般について経験のない読者には、このマニュアルの後半部分を読む前に、これらの領域における一般的な問題について知識を得ておくようお薦めします。この目的に役に立つ良書をいくつか挙げておきます。
正しい方向へ導く多くの助言と役に立つコメントを提供してくれたこと、および、このマニュアルを整形するのに使われた Texinfo パッケージに対する作業を行ってくれたことに対して感謝します。
Vern Paxson (vern@ee.lbl.gov)
Flex を作成してくれたこと、自らの作業を中断してこのマニュアルを徹底的に校正してくれたこと、技術的な面と一般的な面の両方において役に立つコメントを提供してくれたこと、このマニュアルの多くの部分 - 特に性能に関する部分 - に着想を与えてくれた優れたドキュメント flexdoc.1 を書いてくれたことに対して感謝します。
Brendan Kehoe (brendan@cygnus.com)
初期の草稿に対して広範な注とコメントを提供してくれたこと、リファレンス・カードの作成を手伝ってくれたことに対して感謝します。
プログラミングをしている時、私は多くのフリーなツールを使います。私がこれらのツールを使うのは、それがフリー(無料)であるからではなく、他の同等の製品と比較してそれらの方がより良いからです。例えば、gcc は入手可能な ANSI C コンパイラの中で最も良いものの1つであると主張できます。emacs、TeX、groff、ghostscript はいずれも極めて役に立つテキスト処理ツールです。X11、f2c、p2c はそれぞれの分野において注目に値するものです。そして Flex はほとんどのマシン上にある標準の Lex より格段に優れています。
このことは、フリー・ソフトウェアが役に立ち、かつ、十分にサポートされているということの証明です。これらのプログラムのソース・コードにアクセスできたおかげで私は、それらを研究し、そこから学ことができました。
このマニュアルは、私が FSF とすべてのフリー・ソフトウェアの作者の努力に対して恩返しをするための私流の方法なのです。もし読者が GNU のツールやその他のフリーなプログラムを使っているのであれば、ご自分でも何か貢献することを試みられてはいかがでしょうか?現在、フリーなオペレーティング・システムが3つ(Linux、386BSD、GNU HURD)開発中です。そこでは、入手可能なあらゆる援助、特にプログラミングとは関係ない領域での援助が必要とされています。
最後に、このマニュアル中の情報に誤りがないようにするための努力は払いましたが、何等かの誤りや矛盾がきっとまだ含まれているであろうということを一言断っておきたいと思います。このマニュアル中の誤りやその他の不都合な点の責任はすべて私にあり、私以外の何人の見解もしくは能力の限界を表すものではありません。また、このマニュアル中の実例の多くは C 言語の使い方として最も効率的なものではないということを私は認識していますが、このマニュアル中では性能よりも明瞭さの方がはるかに重要であると考えました。
最後にもう一度、すべてのフリー・ソフトウェアの作者に対して感謝いたします。
G.T. Nicol、1993 年 1 月 11 日
Copyright (C) 1992, 1993 Free Software Foundation
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Free Software Foundation.
日本語訳:市川和久
Japanese translation by Kazuhisa Ichikawa (ki@home.email.ne.jp)